﻿using System;
using System.Collections.Generic;
using System.Linq;
using PortalCurriculo.Domain;
using PortalCurriculo.Util.Translation;
using PortalCurriculo.WebUI.Helpers;

namespace PortalCurriculo.WebUI.UserControls.Curriculo
{
    public partial class DadosBasicos : UserControlHelper
    {
        public Usuario Usuario { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            lblNome.Text = Usuario.Pessoa.PessoaFisica.NomeCompleto;
            lblEmail.Text = Usuario.Pessoa.Email;
            lblIdade.Text = string.Concat(TimeHelper.CalcularIdade(Usuario.Pessoa.PessoaFisica.DataNascimento), " ",
                                          Translator.TranslateMessage(DataHora.Messages.Anos, AppRelativeVirtualPath).ToLower());
            lblEstadoCivil.Text = Usuario.Pessoa.PessoaFisica.EstadoCivil.Descricao;
            lblNacionalidade.Text = Usuario.Pessoa.PessoaFisica.Pais.Nacionalidade;

            PreencherTelefones(Usuario.Pessoa.Telefones.OrderBy(tel => tel.TipoTelefone.Descricao).ToList());
            PreencherEndereco(Usuario.Pessoa.Enderecoes.FirstOrDefault());
        }

        private void PreencherEndereco(Domain.Endereco endereco)
        {
            if (endereco == null) return;

            lblEndereco1.Text = string.Concat(endereco.CEP.Logradouro, ", ", endereco.Numero);
            
            if(!string.IsNullOrEmpty(endereco.Complemento))
                lblEndereco1.Text = string.Concat(lblEndereco1.Text , " - ", endereco.Complemento);

            lblEndereco2.Text = string.Concat(endereco.CEP.CEP1, " - ", endereco.CEP.Bairro.Descricao, " - ",
                                              endereco.CEP.Bairro.Cidade.Descricao, " - ",
                                              endereco.CEP.Bairro.Cidade.UnidadeFederativa.Descricao);
        }

        private void PreencherTelefones(IEnumerable<Domain.Telefone> telefones)
        {
            int tipoTelefone = 0;
            lblTelefone.Text = string.Empty;

            foreach (Domain.Telefone telefone in telefones)
            {
                if (!tipoTelefone.Equals(telefone.IdTipoTelefone))
                {
                    if (tipoTelefone != 0) lblTelefone.Text += "<br />";
                    lblTelefone.Text += string.Concat(telefone.TipoTelefone.Descricao, ": ");
                }

                lblTelefone.Text += telefone.Numero;
                tipoTelefone = telefone.IdTipoTelefone;
            }
        }
    }
}